不知道大家對於 Bubble sort 的程式有沒有甚麼問題呢?
今天,我們就來討論一下程式碼!
我的程式碼如下:
#include<stdio.h>
int main(){
	int data[10];
	int i = 0, j = 0, k;
	for(i=0; i<10; i++){
		printf("please input a number>>");
		scanf("%d", &data[i]);
	}
	printf("unsorted:"); 
	for(i=0;i<10;i++)
		printf("%d ",data[i]);
	//bubble sort 
	for(i=0; i<9 ; i++){
		for(j=0; j<9-i-1; j++){
			if(data[j]>data[j+1]){  // change
				data[j]=data[j]^data[j+1];
				data[j+1]=data[j]^data[j+1];
				data[j]=data[j]^data[j+1];
			}
			
		}
		printf("\n");
		printf("i=%d \n",i);
		for(k=0;k<10;k++)
			printf("%d ",data[k]);
	}
	printf("\nsorted:");
	for(i=0;i<10;i++)
	printf("%d ",data[i]);	
	return 0;
}
輸出結果:
我的思路:
i、j。printf() 函式引導使用者輸入資料、 scanf() 函式去讓使用者輸入 10 筆資料、放在陣列中,並先輸出未排序的資料。(方便觀察資料有沒有被放進陣列中)j<9-i 去控制,因為內迴圈的次數是會隨著已排序的數字變多而變少,所以在條件的地方可以用 i 去控制。(忘記的讀者可以去看昨天講解的圖回憶一下會更清楚喔!)自己寫完 bubble sort後,有沒有覺得頗有成就感呢?
我個人是覺得 bubble sort 是算比較直觀的排序方式,還有其他排序方式,如:插入排序法(Insertion sort)、選擇排序法(Selection sort)、快速排序法(Quick sort)等等,有興趣的讀者都可以在網路上找到很多相關資料,在這裡我們就先不繼續談。
明天,讓我們進入一個比較困難的單元-指標!